<!--来料检验单-->
<template>
    <div class="page-box">
        <div class="page-search">
            <div>
                <label>来料检验单编号</label>
                <el-input v-model="searchForm.RecordCode" style="width: 160px;" placeholder="请输入来料检验单编号"></el-input>
            </div>
            <div>
                <label>产品物料名称</label>
                <el-input v-model="searchForm.ItemName" style="width: 160px;" placeholder="请输入产品物料名称"></el-input>
            </div>
            <div>
                <label>检验结果</label>
                <el-select v-model="searchForm.Status" placeholder="请选择检验结果" style="width: 160px;">
                    <el-option label="待质检" value="0"></el-option>
                    <el-option label="检验不通过" value="1"></el-option>
                    <el-option label="检验通过" value="2"></el-option>
                </el-select>
            </div>
            <div>
                <el-button type="primary" @click="search">查询</el-button>
                <el-button @click="reset">重置</el-button>
            </div>
        </div>
        <div class="page-section">
            <div class="page-tool">
                <el-button type="primary"  plain icon="el-icon-plus" @click="add" size="small">新增</el-button>
                <el-button type="danger"  plain icon="el-icon-delete" @click="dels" size="small">删除</el-button>
            </div>


            <!--表单-->
            <el-table :data="tableData"  ref="dataForm"   v-loading="isLoading"  height="calc(100vh - 350px)" >
                
                <el-table-column  type="selection" width="55"></el-table-column>
                <el-table-column  prop="RecordCode" label="来料检验单编号" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="VendorName" label="供应商" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="ItemCode" label="产品物料编码" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="ItemName" label="产品物料名称" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="Count" label="数量" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="CheckNumber" label="抽检数" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="Unqualified" label="不合格数量" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="ReceiveDate" label="来料日期" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="InspectStartTime" label="检验开始时间" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column  prop="EmployeesName" label="质检员" :show-overflow-tooltip="true"></el-table-column>
                <el-table-column prop="Status" label="状态" :show-overflow-tooltip="true">
                    <template slot-scope="scope">
                        <el-tag type="success" v-if="scope.row.Status == '2'">检验通过</el-tag>
                        <el-tag type="warning" v-if="scope.row.Status == '1'">检验不通过</el-tag>
                        <el-tag type="warning" v-else>待质检</el-tag>
                    </template>
                </el-table-column>
                <el-table-column   label="操作" :show-overflow-tooltip="true" width="330px">
                    <template slot-scope="scope">
                        <el-button type="text" @click="update(scope.row)" :disabled="Number(scope.row.Status) === 1 || Number(scope.row.Status) === 2">编辑</el-button>
                        <el-button type="text" @click="del(scope.row)" :disabled="Number(scope.row.Status) === 1 || Number(scope.row.Status) === 2">删除</el-button>
                        <el-button type="text" @click="details(scope.row)">明细</el-button>
                        <el-button type="text" @click="Apply(scope.row,2)" :disabled="Number(scope.row.Status) === 1 || Number(scope.row.Status) === 2">审核通过</el-button>
                        <el-button type="text" @click="Apply(scope.row,1)" :disabled="Number(scope.row.Status) === 1 || Number(scope.row.Status) === 2">审核不通过</el-button>
                        <el-button type="text" @click="Apply(scope.row,0)" :disabled="Number(scope.row.Status) === 0 ">反审</el-button>
                    </template>
                </el-table-column>
            </el-table>
    

            <Pagination @handleSizeChange="handleSizeChange" @handleCurrentChange="handleCurrentChange" :PageIndex="pageDomain.PageIndex" :PageSize="pageDomain.PageSize" :TotalCount="pageDomain.TotalCount"/>
        </div>


        <el-dialog :close-on-click-modal="false" :title="dialogDomain.title" :visible.sync="dialogDomain.dialogVisible"
            width="60%" @close="closeDialog">
            <QcReceiveRecordInput :model="model" :isUpdate="isUpdate" @callback="callback" v-if="dialogDomain.dialogVisible && dialogDomain.dialogType == 0" />
            
            <QcReceiveRecordDetails :model="model" :isUpdate="isUpdate" @callback="callback" v-if="dialogDomain.dialogVisible && dialogDomain.dialogType == 1" />
            
        </el-dialog>

   </div>
</template>
<script>

import QcReceiveRecordInput from './components/QcReceiveRecordInput.vue';
import QcReceiveRecordDetails from './components/QcReceiveRecordDetails.vue';
import Pagination from '@/components/Pagination.vue';
export default {
    components:{
        Pagination,
        QcReceiveRecordInput,
        QcReceiveRecordDetails,
    },
    mounted(){
        this.dataBind();
    },
    data(){
        return{

            //搜索字段
            searchForm:{
                RecordCode:'',
                ItemName:'',
                VendorId:'',
            },
           

            //对话框对象
            dialogDomain:{
                title:'来料检验单',
                dialogVisible:false,
                dialogType:0
            },

            //判断是否修改状态
            isUpdate:false,
            //数据模型
            model:{
                RecordCode:'',
                ItemId:'',
                ItemCode:'',
                ItemName:'',
                VendorId:'',
                VendorName:'',
                VendorContact:'',
                VendorContactTel:'',
                Status:'',
                Count:'',
                CheckNumber:'0',
                Unqualified:'0',
                InspectGroup:'',
                EmployeesId:'1',
                EmployeesName:'w',
                ReceiveDate:'',
                InspectStartTime:'',
                InspectEndTime:'',
                Remark:'',
                InspectWay:'全检',
            },


            pageDomain:{
                PageIndex:1,
                PageSize:10,
                TotalCount:0
            },
            //表单数据
            tableData:[],

            isLoading:false


        }
    },
    methods:{
        add(){
            this.dialogDomain.title="新增来料检验单";
            this.dialogDomain.dialogVisible=true;
            this.isUpdate=false;
            this.dialogDomain.dialogType=0;
        },
        update(model){
            this.dialogDomain.title = "编辑来料检验单";
            this.dialogDomain.dialogVisible = true;
            this.isUpdate = true;
            this.dialogDomain.dialogType=0;
            this.model = model;
            model.Status=model.Status.toString();
        },
        details(model){
            this.dialogDomain.title = "来料检验单明细";
            this.dialogDomain.dialogVisible = true;
            this.isUpdate = true;
            this.dialogDomain.dialogType=1;
            this.model = model;
            model.Status=model.Status.toString();
        },





        

        //批量删除
        dels(){
            if(this.$refs.dataForm.selection.length<=0){
                this.showNotify('请先选择一项')
                return;
            }
            this.$confirm('确定删除选中的数据吗？这将不可恢复, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            })
            .then(() => {
                
                //获取选中的表格数据 并筛选id
                var ids =this.$refs.dataForm.selection.map(x=>x.Id)

                //拼接参数
                let params =  new URLSearchParams();
                params.append('ids',ids.join(','))

                this.$http.delete('/api/QcReceiveRecord/DelAll',{
                    data:params,
                    headers:{
                        'content-Type': 'application/x-www-form-urlencoded'
                    },
                    loading:this.$loading()
                })
                .then((res)=>{
                    this.showNotify('操作成功','success');
                    this.dataBind();
                })
            }).catch(()=>{});     
            
        },

        //删除单条
        del(model){
            this.$confirm('确定删除选中的数据吗？这将不可恢复, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            })
            .then(() => {
                this.$http.delete('/api/QcReceiveRecord',{
                    data:{
                        id:model.Id
                    },
                    headers:{
                        'content-Type': 'application/x-www-form-urlencoded'
                    }
                })
                .then((res)=>{
                    this.showNotify('操作成功','success');
                    this.dataBind();
                })
            }).catch(()=>{});  
        },

        //审核 & 反审
        Apply(model,Status) {
            console.log(model);
            let msg = Status==0?"确认反审该单据吗？":"确认审核该单据吗？"
            this.$confirm(msg, '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            })
            .then(() => {
                this.$http.putForm('/api/QcReceiveRecord/UpdateStatus', {
                    Id: model.Id,
                    Status: Status
                })
                .then((res) => {
                    this.showNotify('操作成功', 'success');
                    this.dataBind();
                })
            }).catch(() => { });

        },


        //对话框关闭事件
        closeDialog(){
            this.model={
                RecordCode:'',
                ItemId:'',
                ItemCode:'',
                ItemName:'',
                VendorId:'',
                VendorName:'',
                VendorContact:'',
                VendorContactTel:'',
                Status:'',
                Count:'',
                CheckNumber:'0',
                Unqualified:'1',
                InspectGroup:'',
                EmployeesId:'1',
                EmployeesName:'w',
                ReceiveDate:'',
                InspectStartTime:'',
                InspectEndTime:'',
                Remark:'',
                InspectWay:'全检',
            }
        },


        //查询
        search(){
            this.pageDomain.PageIndex=1;
            this.dataBind();
        },
        //重置查询输入框
        reset(){
            this.searchForm.RecordCode='';
            this.searchForm.ItemName='';
            this.searchForm.Status='';
        },

        //新增或编辑页面回调
        callback(){
            let actionName = this.isUpdate?'编辑':'新增';
            this.showNotify(actionName+'来料检验单成功','success');
            this.dialogDomain.dialogVisible=false;
            this.dataBind();
        },

        
        //分页方法
        handleSizeChange(val){
            this.pageDomain.PageIndex = 1;
            this.pageDomain.PageSize = val;
            this.dataBind();
        },
        handleCurrentChange(val){
            this.pageDomain.PageIndex = val;
            this.dataBind();
        },


        

        //获取数据
        dataBind(){
            this.isLoading=true;
            this.$http.get('/api/QcReceiveRecord',
            {
               params:{
                    PageIndex:this.pageDomain.PageIndex,
                    PageSize:this.pageDomain.PageSize,
                    RecordCode:this.searchForm.RecordCode,
                    ItemName:this.searchForm.ItemName,
                    Status:this.searchForm.Status,
               }
            })
            .then(res=>{
                this.tableData=res.Data;
                this.pageDomain.TotalCount = res.Count;
                this.isLoading=false;
            })
        }
    }

}
</script>